package pe.edu.upc.e41a.javasoft.dao;

import java.util.List;
import java.util.Set;
import javax.persistence.TypedQuery;
import pe.edu.upc.e41a.javasoft.domain.TipoDocumento;
import pe.edu.upc.e41a.javasoft.domain.Usuario;

public interface TipoDocumentoDao {

	// Métodos persistentes;
	public void saveTipoDocumento(TipoDocumento tipoDocumento);

	public void updateTipoDocumento(TipoDocumento tipoDocumento);

	public void deleteTipoDocumento(TipoDocumento tipoDocumento);

	// Finders comunes
	public long countTipoDocumentoes();

	public List<TipoDocumento> findAllTipoDocumentoes();

	public TipoDocumento findTipoDocumento(Integer codigo);

	public List<TipoDocumento> findTipoDocumentoEntries(int firstResult,
			int maxResults);

	// Finders avanzado
	public TypedQuery<TipoDocumento> findTipoDocumentoesByDescripcionEquals(
			String descripcion);

	public TypedQuery<TipoDocumento> findTipoDocumentoesByDescripcionIsNotNull();

	public TypedQuery<TipoDocumento> findTipoDocumentoesByDescripcionIsNull();

	public TypedQuery<TipoDocumento> findTipoDocumentoesByDescripcionLike(
			String descripcion);

	public TypedQuery<TipoDocumento> findTipoDocumentoesByDescripcionNotEquals(
			String descripcion);

	public TypedQuery<TipoDocumento> findTipoDocumentoesByUsuarios(
			Set<Usuario> usuarios);

}
